
package doc2db.fileWorker;

import doc2db.Keey;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

/**
 *  <p>осуществляет работу с файлами (чтение/запись/...)</p>
 * @author yura
 */
public class FileIO {

    /**
     * Вычитывает данные из указаного файла
     * @param fileName имя файла
     * @return вычетанный файл
     * @throws java.io.FileNotFoundException
     * @throws java.io.IOException
     */
    public static String readFromFiles(String fileName) {
        StringBuilder str = new StringBuilder();
        try {
            BufferedReader in = new BufferedReader(new FileReader(fileName));
            String s;
            while ((s = in.readLine()) != null) {
                str.append(s).append("\n");
            }
            in.close();
        } catch (IOException e) {
            if(Keey.debug)
                e.printStackTrace();
        }


        return str.toString();
    }

    /**
     * Создаёт файл или перезаписывает уже существующий
     * @param file что записать в созданный файл
     * @param fileName имя создаваемого файла
     * @throws java.io.IOException
     */
    public static boolean createFile(String file, String fileName) {
        try {
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter
                                 (new FileOutputStream(fileName),"UTF8"));
            //BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
            out.write(file);
            out.close();
        } catch (IOException iOException) {
            if(Keey.debug)
                iOException.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * дозаписывает данные в файл
     * @param file что записать в созданный файл
     * @param fileName имя создаваемого файла
     * @throws java.io.IOException
     */
    public static void addIntoFile(String file, String fileName){
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter(fileName, true));
            out.write(file);
            out.close();
        } catch (IOException e) {
            if(Keey.debug)
                e.printStackTrace();
        }
    }

    /**
     * <p>Копирует src файл в dst файл.
     * Если dst файл не существует, то он создастся</p>
     * @param src что копируем
     * @param dst во какой файл копируем
     * @throws java.io.IOException IOException
     */
    public static void copyFile(File src, File dst) throws IOException {
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dst);

        // Transfer bytes from in to out
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }

    /**
     * Удаляет файл
     * @param fileName имя удаляемого файла
     * @return удалился ли файл или нет
     * @throws java.io.IOException
     */
    public static boolean deleteFile(String fileName) {
        return new File(fileName).delete();
    }
}
